home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PC World Komputer 2010 April
/
PCWorld0410.iso
/
redakcyjne
/
programy
/
Tlen 6.0.1.12 pl
/
tleninst60112.exe
/
sdk
/
TlenSources
/
plugin
/
plugin_menu.h
< prev
next >
Wrap
C/C++ Source or Header
|
2006-08-30
|
18KB
|
375 lines
#ifndef plugin_menuH
#define plugin_menuH
#include <windows.h>
#include "sl_struct.h"
#include "cl_struct.h"
#include "plugin_skin.h"
//-----------------------------------------------------------------------------------------------
//STRUKTURY
//-----------------------------------------------------------------------------------------------
//-----------------------------------------------------------------------------------------------
//Pozycja menu
//-----------------------------------------------------------------------------------------------
typedef struct {
int structSize; //rozmiar struktury w bajtach
char *Item_ID; //ID danej pozycji
char *Parent_ID; //Je£li tutaj bΩdzie jaka£ warto£µ, to dana pozycja zostanie wstawiona jako child (submenu)
char *Menu_ID; //ID menu do kt≤rego przypisana jest ta pozycja
char *Caption; //wy£wietlana nazwa pozycji w menu
HANDLE ItemHandle; //wskaƒnik TMenuItem * danej pozycji
int Flags; //Flagi
int Position; //Pozycja w menu, im wy┐sza liczba, tym ni┐ej znajduje siΩ dany element
TlenSingleImageDef Icon; //Ikonka dla danej pozycji
int IconIndex; //je£li Icon jest NULL, i IconIndex > 0, to przypisywana jest ikona o indeksie IconIndex - 1
//je£li ikonka dodawana jest przez Icon, to IconIndex jest updatowane po dodaniu pozycji menu
TLENFUNCTION CallBack; //funkcja callback dla danej pozycji - wywo│ywana po jej klikniΩciu
//WPARAM: TlenMenuItemDefinition *
//LPARAM: MenuPopupInfo *
DWORD HotKey; //skr≤t klawiszowy, taki sam jak lParam z WM_HOTKEY
//(0, gdy bez skr≤tu)
HINSTANCE ModuleHandle; //Uchwyt dll'a pluginu
void *OwnerData; //dowolny wskaƒnik
} TlenMenuItemDefinition;
//-----------------------------------------------------------------------------------------------
//Informacja dotycz╣ca pokazywanego menu
//-----------------------------------------------------------------------------------------------
typedef struct {
int structSize; //rozmiar struktury w bajtach
POINT point; //punkt w kt≤rym pokazywane jest menu
char *Menu_ID; //ID pokazywanego menu
char *Location_ID; //Lokalizacja pokazywanego menu
DWORD HotKey; //Je£li zosta│ wci£niΩty klawisz na li£cie kontakt≤w, to tutaj jest jego kod
ContactsListDef Contacts; //Kontakty, kt≤re zosta│y zaznaczone przed wybraniem menu
StringListDef MenuItemsToShow; //to wype│niaj╣ modu│y wpisuj╣c pozycje menu,
//kt≤re chc╣ pokazaµ przy menu zale┐nym od kontaktu
TLENFUNCTION CallBackFunc; //funkcja zostanie wywo│ana po wszystkich manipulacjach na menu, je£li wywo│uj╣cy
//modu│ chce ukryµ lub pokazaµ jak╣£ pozycjΩ, to w tym w│a£nie miejscu mo┐e to uczyniµ
//LPARAM - MenuPopupInfo *
void *OwnerData; //Dowolny wskaƒnik
ContactsListDef SubContacts; // kontakty, ktorych menu bedzie wyswietlane w podmenu
} MenuPopupInfo;
//-----------------------------------------------------------------------------------------------
//Informacja dotycz╣ca klikniΩtej pozycji
//-----------------------------------------------------------------------------------------------
typedef struct {
int structSize; //rozmiar struktury w bajtach
TlenMenuItemDefinition *item; //klikniΩta pozycja
MenuPopupInfo *menu; //wy£wietlone menu
} MenuItemClickedDef;
//-----------------------------------------------------------------------------------------------
//FUNKCJE
//-----------------------------------------------------------------------------------------------
//Dodaje pozycje w menu
//WPARAM - TlenMenuItemDefinition *
//Zwraca ItemHandle
#define TLEN_ADD_MENU_ITEM "Tlen/AddMenuItem"
//Kasuje pozycjΩ menu
//WPARAM - ItemHandle do skasowania
#define TLEN_DELETE_MENU_ITEM "Tlen/DeleteMenuItem"
//Kasuje dzieci pozycji menu
//WPARAM - char *ItemID
#define TLEN_DELETE_MENU_CHILDREN "Tlen/DeleteMenuChildren"
//Zmienia w│a£ciwo£ci pozycji menu
//WPARAM - ItemHandle, LPARAM - TlenMenuItemDefinition *
#define TLEN_CHANGE_MENU_ITEM "Tlen/ChangeMenuItem"
//Szuka pozycji menu
//WPARAM - TlenMenuItemDefinition *
//Zwraca TlenMenuItemDefinition * lub null
#define TLEN_FIND_MENU_ITEM "Tlen/FindMenuItem"
//Dodaje callback do menu
//WPARAM - (char *) MenuID, LPARAM - (TLENFUNCTION) CallBackFunc
#define TLEN_ADD_MENU_CALLBACK "Tlen/AddMenuCallBack"
//Usuwa callback z menu
//WPARAM - (char *) MenuID, LPARAM - (TLENFUNCTION) CallBackFunc
#define TLEN_REMOVE_MENU_CALLBACK "Tlen/RemoveMenuCallBack"
//Przy wywo│aniach funkcji callback:
//WPARAM - kod zdarzenia
//przed pokazaniem menu, tutaj pluginy moga dodac nowe pozycje, zmienic lub usunac jakies stworzone przez tlen
//LPARAM - MenuPopupInfo *
#define TLEN_MENU_CALLBACK_BEFORE_POPUP 1
//po kliknieciu kazdej pozycji menu
//LPARAM - MenuItemClickedDef *
#define TLEN_MENU_CALLBACK_ITEM_CLICKED 2
//tu plugin/modul musi dodac do stringlisty (->MenuItemsToShow) pozycje, ktore chce, zeby byly widoczne w menu
//LPARAM - MenuPopupInfo *
#define TLEN_MENU_CALLBACK_CHOOSE_VISIBLE 3
//wywolywane w module pokazujacym menu tuz przed jego wyswietleniem
//ostatnia szansa na ukrycie/pokazanie okreslonych pozycji
//LPARAM - MenuPopupInfo *
#define TLEN_MENU_CALLBACK_LAST_CHANGE 4
//-----------------------------------------------------------------------------------------------
//STAúE
//-----------------------------------------------------------------------------------------------
//Typy menu
#define TLEN_MENU_TYPE_CONTACT_INDEPENDENT 1 //niezale┐ne od kontaktu (np menu g│≤wne)
#define TLEN_MENU_TYPE_CONTACT_DEPENDENT 2 //zale┐ne od kontaktu (np menu listy kontakt≤w)
//Lokalizacja menu
#define TLEN_MENULOCATION_MAINMENUBUTTON "Tlen/MainMenuButton"
#define TLEN_MENULOCATION_STATUSBUTTONSBAR "Tlen/StatusButtonsBar"
#define TLEN_MENULOCATION_SYSTRAY "Tlen/SysTray"
#define TLEN_MENULOCATION_CONTACTLIST "Tlen/ContactList"
#define TLEN_MENULOCATION_CHATWINDOW "Tlen/ChatWindow"
#define TLEN_MENULOCATION_AUTHREQUEST "Tlen/AuthRequest"
#define TLEN_MENULOCATION_TLENSEARCH "Tlen/TlenSearch"
#define TLEN_MENULOCATION_CHATOCCUPANTS "Tlen/ChatOccupant"
#define TLEN_MENULOCATION_PRIVATECHAT "Tlen/PrivateChat"
#define TLEN_MENULOCATION_CONTACTLIST_METAGROUP "Tlen/ContactListMetaGroup"
//Identyfikatory menu u┐ywanych w tlenie
#define TLEN_MENUID_MAIN "Tlen/Main"
#define TLEN_MENUID_CL_ELEMENT "Tlen/CL/Element"
#define TLEN_MENUID_CL_GROUP "Tlen/CL/Group"
#define TLEN_MENUID_CL_METAGROUP "Tlen/CL/MetaGroup"
#define TLEN_MENUID_CL_SECTION "Tlen/CL/Section"
#define TLEN_MENUID_STATUS "Tlen/Status"
#define TLEN_MENUID_CHATSTYLES "Tlen/ChatStyles"
#define TLEN_MENUID_CHATROOMS "Tlen/ChatRooms"
#define GG_MENUID_STATUS "GG/Status"
//Flagi Menu Item
#define TMI_GRAYED 0x00000001
#define TMI_CHECKED 0x00000002
#define TMI_HIDDEN 0x00000004
#define TMI_AUTOCHECK 0x00000008
//flagi wskazuj╣ce co zmodyfikowaµ (przy wywo│aniu modyfikacji)
#define TMIM_CAPTION 0x10000000
#define TMIM_FLAGS 0x20000000
#define TMIM_ICON 0x40000000
#define TMIM_HOTKEY 0x80000000
#define TMIM_ALL 0xF0000000
#define TMIM_ICON_REPLACE 0x01000000
//Po czym wyszukiwac dany item:
#define TMIS_ITEMID 0x00100000
#define TMIS_MENUID 0x00200000
#define TMIS_CAPTION 0x00400000
#define TMIS_POSITION 0x00800000
#define TMIS_ALL 0x00F00000
//pozycje w menu tlenu:
#define MI_SEPARATOR "Separator"
#define MI_MAIN_MESSAGE "Tlen/Main/Message"
#define MI_MAIN_CHAT "Tlen/Main/Chat"
#define MI_MAIN_CONFERENCE "Tlen/Main/Conference"
#define MI_MAIN_CHATS "Tlen/Main/Chats"
#define MI_MAIN_SMSSEND "Tlen/Main/SMSSend"
#define MI_MAIN_SMSOUTBOX "Tlen/Main/SMSOutbox"
#define MI_MAIN_SMSNOTIFIER "Tlen/Main/SMSNotifier"
#define MI_MAIN_PHONES "Tlen/Main/Phones"
#define MI_MAIN_SEARCH "Tlen/Main/Search"
#define MI_MAIN_SEARCHTLEN "Tlen/Main/SearchTlen"
#define MI_MAIN_SEARCHGG "Tlen/Main/SearchGG"
#define MI_MAIN_SEARCHMYDATA "Tlen/Main/SearchMyData"
#define MI_MAIN_ADDCONTACT "Tlen/Main/AddContact"
#define MI_MAIN_ADDGROUP "Tlen/Main/AddGroup"
#define MI_MAIN_OPTIONSGGUSERS "Tlen/Main/OptionsGGUsers"
#define MI_MAIN_ARCHIVE "Tlen/Main/Archive"
#define MI_MAIN_OPTIONS "Tlen/Main/Options"
#define MI_MAIN_SKINPREVIEW "Tlen/Main/SkinPreview"
#define MI_MAIN_MYPROFILES "Tlen/Main/MyProfiles"
#define MI_MAIN_PROFILE "Tlen/Main/Profile"
#define MI_MAIN_ADDPROFILE "Tlen/Main/AddProfile"
#define MI_MAIN_LOGOUTPROFILE "Tlen/Main/LogoutProfile"
#define MI_MAIN_NOTIFYFRIEND "Tlen/Main/NotifyFriend"
#define MI_MAIN_IMPEX "Tlen/Main/ImpEx"
#define MI_MAIN_EXIT "Tlen/Main/Exit"
#define MI_CONTACT_MESSAGE "Tlen/Contact/Message"
#define MI_CONTACT_CHAT "Tlen/Contact/Chat"
#define MI_CONTACT_CONFERENCE "Tlen/Contact/Conference"
#define MI_CONTACT_VOICECHAT "Tlen/Contact/VoiceChat"
#define MI_CONTACT_SMSSEND "Tlen/Contact/SMSSend"
#define MI_CONTACT_FILESEND "Tlen/Contact/FileSend"
#define MI_CONTACT_MAILSEND "Tlen/Contact/MailSend"
#define MI_CONTACT_PICTURESEND "Tlen/Contact/PictureSend"
#define MI_CONTACT_PS_OPEN "Tlen/Contact/PictureSend/Open"
#define MI_CONTACT_PS_LAST "Tlen/Contact/PictureSend/Last"
#define MI_CONTACT_PS_CLEARLAST "Tlen/Contact/PictureSend/ClearLast"
#define MI_CONTACT_VCARD "Tlen/Contact/VCard"
#define MI_CONTACT_ARCHIVE "Tlen/Contact/Archive"
#define MI_CONTACT_COPYDES "Tlen/Contact/CopyDescription"
#define MI_CONTACT_ADDCONTACT "Tlen/Contact/AddContact"
#define MI_CONTACT_EDITCONTACT "Tlen/Contact/EditContact"
#define MI_CONTACT_DELETECONTACT "Tlen/Contact/DeleteContact"
#define MI_CONTACT_BLOCK "Tlen/Contact/Block"
#define MI_CONTACT_UNBLOCK "Tlen/Contact/Unblock"
//czatowe
#define MI_CONTACT_SETRIGHTS "Tlen/Contact/SetRights"
#define MI_CONTACT_IGNORE "Tlen/Contact/Ignore"
// subkontakty
#define MI_CONTACT_SUBCONTACT1 "Tlen/Contact/SubContact1"
#define MI_CONTACT_SUBCONTACT2 "Tlen/Contact/SubContact2"
#define MI_CONTACT_SUBCONTACT3 "Tlen/Contact/SubContact3"
#define MI_CONTACT_SUBCONTACT4 "Tlen/Contact/SubContact4"
#define MI_GROUP_CHANGEGROUPNAME "Tlen/Group/ChangeGroupName"
#define MI_GROUP_DELETEGROUP "Tlen/Group/DeleteGroup"
#define MI_METAGROUP_CHANGEMETAGROUPNAME "Tlen/MetaGroup/ChangeMetaGroupName"
#define MI_METAGROUP_DELETEMETAGROUP "Tlen/MetaGroup/DeleteMetaGroup"
#define MI_TLENSTATUS_ONLINE "Tlen/Status/Online"
#define MI_TLENSTATUS_CHAT "Tlen/Status/Chat"
#define MI_TLENSTATUS_DND "Tlen/Status/DND"
#define MI_TLENSTATUS_AWAY "Tlen/Status/Away"
#define MI_TLENSTATUS_XA "Tlen/Status/XA"
#define MI_TLENSTATUS_INVISIBLE "Tlen/Status/Invisible"
#define MI_TLENSTATUS_OFFLINE "Tlen/Status/Offline"
#define MI_TLENSTATUS_DESCSTATUS "Tlen/Status/DescStatus"
#define MI_TLENSTATUS_DESCSTATUSITEM "Tlen/Status/DescStatusItem"
#define MI_TLENSTATUS_DESCSTATUSCUST "Tlen/Status/DescStatusCust"
#define MI_TLENSTATUS_EXIT "Tlen/Status/Exit"
#define MI_GGSTATUS_ONLINE "GG/Status/Online"
#define MI_GGSTATUS_AWAY "GG/Status/Away"
#define MI_GGSTATUS_INVISIBLE "GG/Status/Invisible"
#define MI_GGSTATUS_OFFLINE "GG/Status/Offline"
#define MI_GGSTATUS_ONLYFRIENDS "GG/Status/OnlyFriends"
#define MI_GGSTATUS_DESCSTATUS "GG/Status/DescStatus"
#define MI_GGSTATUS_DESCSTATUSITEM "GG/Status/DescStatusItem"
#define MI_GGSTATUS_DESCSTATUSCUST "GG/Status/DescStatusCust"
#define MI_GGSTATUS_EXIT "GG/Status/Exit"
#define MI_CHATSTYLES_STYLE "Tlen/ChatStyles/Style"
#define MI_CHATSTYLES_CHATOPTIONS "Tlen/ChatStyles/ChatOptions"
#define MI_CHATROOMS_DELETEFAVORITE "Tlen/ChatRooms/DeleteFavorite"
//kolejnosc poszczegolnych pozycji menu
#define MI_POS_MAIN_MESSAGE 10000
#define MI_POS_MAIN_CHAT 10100
#define MI_POS_MAIN_CONFERENCE 10200
#define MI_POS_MAIN_CHATS 10300
#define MI_POS_MAIN_SMSSEND 100000
#define MI_POS_MAIN_SMSOUTBOX 100100
#define MI_POS_MAIN_SMSNOTIFIER 100200
#define MI_POS_MAIN_PHONES 100300
#define MI_POS_MAIN_VCARD 200000
#define MI_POS_MAIN_SEARCH 300000
#define MI_POS_MAIN_SEARCHTLEN 10000
#define MI_POS_MAIN_SEARCHGG 10100
#define MI_POS_MAIN_SEARCHMYDATA 100000
#define MI_POS_MAIN_ADDCONTACT 300100
#define MI_POS_MAIN_ADDGROUP 300200
#define MI_POS_MAIN_OPTIONSGGUSERS 400000
#define MI_POS_MAIN_ARCHIVE 500000
#define MI_POS_MAIN_OPTIONS 600000
#define MI_POS_MAIN_SKINPREVIEW 600100
#define MI_POS_MAIN_MYPLANS 700000
#define MI_POS_MAIN_MYPROFILES 800000
#define MI_POS_MAIN_ADDPROFILE 800100
#define MI_POS_MAIN_LOGOUTPROFILE 800200
#define MI_POS_MAIN_NOTIFYFRIEND 900000
#define MI_POS_MAIN_IMPEX 900100
#define MI_POS_MAIN_EXIT 1000000
#define MI_POS_CONTACT_MESSAGE 10000
#define MI_POS_CONTACT_CHAT 10100
#define MI_POS_CONTACT_CONFERENCE 10200
#define MI_POS_CONTACT_VOICECHAT 10300
#define MI_POS_CONTACT_SMSSEND 100000
#define MI_POS_CONTACT_FILESEND 100100
#define MI_POS_CONTACT_MAILSEND 100200
#define MI_POS_CONTACT_PICTURESEND 100300
#define MI_POS_CONTACT_PS_OPEN 100
#define MI_POS_CONTACT_PS_LAST 10000
#define MI_POS_CONTACT_PS_CLEARLAST 100000
#define MI_POS_CONTACT_VCARD 200000
#define MI_POS_CONTACT_ARCHIVE 200100
#define MI_POS_CONTACT_COPYDES 200200
#define MI_POS_CONTACT_ADDCONTACT 300000
#define MI_POS_CONTACT_EDITCONTACT 300100
#define MI_POS_CONTACT_DELETECONTACT 300200
#define MI_POS_CONTACT_BLOCK 400000
#define MI_POS_CONTACT_UNBLOCK 400100
#define MI_POS_CONTACT_IGNORE 500100
#define MI_POS_CONTACT_SETRIGHTS 500200
#define MI_POS_CONTACT_SUBCONTACT1 500300
#define MI_POS_CONTACT_SUBCONTACT2 500400
#define MI_POS_CONTACT_SUBCONTACT3 500500
#define MI_POS_CONTACT_SUBCONTACT4 500600
#define MI_POS_CONTACT_CHANGEMETAGROUPNAME 500700
#define MI_POS_CONTACT_DELETEMETAGROUP 500800
#define MI_POS_GROUP_CHANGEGROUPNAME 10000
#define MI_POS_GROUP_DELETEGROUP 10100
#define MI_POS_METAGROUP_CHANGEMETAGROUPNAME 10000
#define MI_POS_METAGROUP_DELETEMETAGROUP 10100
#define MI_POS_TLENSTATUS_ONLINE 10000
#define MI_POS_TLENSTATUS_CHAT 10100
#define MI_POS_TLENSTATUS_DND 10200
#define MI_POS_TLENSTATUS_AWAY 10300
#define MI_POS_TLENSTATUS_XA 10400
#define MI_POS_TLENSTATUS_INVISIBLE 10500
#define MI_POS_TLENSTATUS_OFFLINE 10600
#define MI_POS_TLENSTATUS_DESCSTATUS 40050
#define MI_POS_TLENSTATUS_DESCSTATUSCUST 40100
#define MI_POS_TLENSTATUS_EXIT 1000000
#define MI_POS_GGSTATUS_ONLINE 30000
#define MI_POS_GGSTATUS_AWAY 30100
#define MI_POS_GGSTATUS_INVISIBLE 30200
#define MI_POS_GGSTATUS_OFFLINE 30300
#define MI_POS_GGSTATUS_ONLYFRIENDS 40000
#define MI_POS_GGSTATUS_DESCSTATUS 100050
#define MI_POS_GGSTATUS_DESCSTATUSCUST 100100
#define MI_POS_GGSTATUS_EXIT 1000000
#define MI_POS_CHATSTYLES_CHATOPTIONS 100000
//-----------------------------------------------------------------------------------------------
#endif